class CommonUtil {
  /**
   * 合并样式
   * @param {Object} defaultStyle - 默认样式
   * @param {Object} optionsStyle - 选项样式
   * @returns {Object} 合并后的样式
   */
  static mergeStyle(defaultStyle, optionsStyle) {
    return { ...defaultStyle, ...optionsStyle };
  }

  /**
   * 合并样式到默认样式
   * @param {Object} defaultStyle - 默认样式
   * @param {Object} optionsStyle - 选项样式
   * @returns {Object} 合并后的样式
   */
  static mergeStyleToDefault(defaultStyle, optionsStyle) {
    let style = Object.fromEntries(
      Object.keys(defaultStyle).map((key) => [
        key,
        optionsStyle && optionsStyle[key] !== undefined
          ? optionsStyle[key]
          : defaultStyle[key],
      ])
    );
    return style;
  }

  /**
   * 经纬度坐标数据转换为Cesium.Cartesian3对象
   * @param { Cesium.Cartesian3 | Array<number>} position - 位置数据
   * @returns {Cesium.Cartesian3} Cesium.Cartesian3对象
   */
  static positionToCartesian3(position) {
    if (position instanceof Cesium.Cartesian3) return position;
    if (Array.isArray(position) && position.length >= 2) {
      return Cesium.Cartesian3.fromDegrees(
        position[0],
        position[1],
        position[2] || 0
      );
    }
    throw new Error(
      "position 必须是 Cesium.Cartesian3 或 [lng, lat, alt] 数组"
    );
  }
}
export default CommonUtil;
